package com.laiyizhan.common.utils;

import java.util.Random;

/**
 * 随机工具类
 */
public class RandomUtils {

	static char[] str = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

	public static String randomString(int length) {
		if (length < 1) {
			return null;
		}

		StringBuilder buffer = new StringBuilder();
		Random rand = new Random();
		for (int i = 0; i < length; i++) {
			int num = rand.nextInt(62);
			buffer.append(asciiToChar(num));
		}
		return buffer.toString();
	}

	/**
	 * 生成随即数字
	 * 
	 * @param len
	 *            生成的数字的总长度,最大10位
	 * @return 数字字符串
	 */
	public static String genRandomNum(int len) {
		final int maxNum = 10;
		int i; // 生成的随机数
		int count = 0; // 生成的密码的长度

		StringBuffer pwd = new StringBuffer("");
		Random r = new Random();
		while (count < len) {
			// 生成随机数，取绝对值，防止生成负数，

			i = Math.abs(r.nextInt(maxNum)); // 生成的数最大为36-1

			if (i >= 0 && i < str.length) {
				pwd.append(str[i]);
				count++;
			}
		}
		return pwd.toString();
	}

	private static char asciiToChar(long num) {
		// 0-9用数字表示
		if (num < 10) {
			return (char) (num + 48);
		}
		// 10-35用A-Z表示
		else if (num < 36) {
			return (char) (num + 55);
		}
		// 36-61用a-z表示
		return (char) (num + 61);
	}

}
